/*
 * FileName：InitWxListener.java 
 * <p>
 * Copyright (c) 2017-2020 <a href="https://www.smartwx.info">hermit(1154808491@qq.com)</a>.
 * <p>
 * Licensed under the GNU General Public License, Version 3 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/gpl-3.0.html
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */
package com.smart.wx.common.listener;

import com.jpay.alipay.AliPayApiConfig;
import com.jpay.alipay.AliPayApiConfigKit;
import com.jpay.weixin.api.WxPayApiConfig;
import com.jpay.weixin.api.WxPayApiConfigKit;
import com.smart.common.spring.SpringContextHolder;
import com.smart.common.util.CacheUtils;
import com.smart.common.util.WxMemoryCacheClient;
import com.smart.sys.entity.AliPayConfig;
import com.smart.sys.entity.SysConfig;
import com.smart.sys.entity.WxPayConfig;
import com.smart.sys.service.SysConfigService;
import com.smart.wx.wxcms.entity.Account;
import com.smart.wx.wxcms.service.AccountService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 *
 * @author hermit
 * @version 2.0
 * @date 2018-04-17 10:54:58
 */
@Component
public class InitWxListener implements CommandLineRunner {
    

    @Override
    public void run(String... args) throws Exception {
        //初始化缓存
        WxMemoryCacheClient.initCache();
        //放入公众号
        AccountService accountService = SpringContextHolder.getBean("accountService");
        List<Account> accounts = accountService.listForPage(new Account());
        WxMemoryCacheClient.addMpAccount(accounts);
        //读取所有缓存
        SysConfigService configService = SpringContextHolder.getBean("sysConfigService");
        List<SysConfig> configList = configService.getConfigList();
        for (SysConfig config : configList) {
            CacheUtils.put(config.getJkey().toUpperCase(), config.getJvalue());
        }
        //初始化微信支付
        WxPayConfig wxPayConfig = SpringContextHolder.getBean("wxPayConfig");
        WxPayApiConfigKit.setThreadLocalWxPayApiConfig(WxPayApiConfig.New()
                .setAppId(wxPayConfig.getAppId())
                .setMchId(wxPayConfig.getMchId())
                .setPaternerKey(wxPayConfig.getPartnerKey())
                .setNotifyUrl(wxPayConfig.getNotifyUrl())
                .setPayModel(WxPayApiConfig.PayModel.BUSINESSMODEL));
        //初始化支付宝支付
        //初始化微信支付
        AliPayConfig aliPayConfig = SpringContextHolder.getBean("aliPayConfig");
        AliPayApiConfigKit.setThreadLocalAliPayApiConfig(AliPayApiConfig.New()
                .setAppId(aliPayConfig.getAppId())
                .setAlipayPublicKey(aliPayConfig.getPublicKey())
                .setCharset("UTF-8")
                .setPrivateKey(aliPayConfig.getPrivateKey())
                .setServiceUrl(aliPayConfig.getServerUrl())
                .setSignType("RSA2")
                .build());
    }
}
